# Crystal Reports 10: Release Notes

December 2003

Welcome to Crystal Reports 10, the world standard in high-performance reporting. With Crystal Reports, you can rapidly transform almost any data into powerful, interactive content for tight integration into .NET, Java, and COM applications and extend your reporting solutions to other environments including Crystal Enterprise, portals, wireless devices, and Microsoft Office documents.

The notes contained in this document cover important information pertaining to this release of Crystal Reports. Please read the entire document before performing the Crystal Reports 10 installation, and be sure to visit the Crystal Reports web site for the latest product news.

Click the appropriate link to jump to that section:

- Installation
- Upgrading
- Notes and limitations
- Language version issues
- Documentation
- Java Reporting Component

## Crystal Reports

### Installation

- If you first install Crystal Reports 10 on a machine, you cannot then install Crystal Reports 9 or 9.2 on the same machine in a side-by-side installation. To run both versions side-by-side, make sure you install Crystal Reports 9.x first.

- Before running the installation packages for Java reporting, ensure that the Java Runtime Environment (JRE) is installed.

- On-demand installation of database drivers does not work for reports based on Business Views.

- The Java Reporting Component does not support the JavaBean driver.

- The Delphi VCL for Crystal Reports is only available from the Crystal Decisions Developer Zone web site.

- If you install Crystal Reports 10 on the same machine as a Crystal Enterprise 9 Web Component Server (WCS), the Crystal Enterprise web desktop running on this WCS will stop working. This issue also occurs when you install Crystal Reports 9 on the same machine as a Crystal Enterprise 10 WCS.

#### .NET installation

- After uninstalling Crystal Reports 10, a "Crystal Reports" tab still appears in the Visual Studio .NET toolbox. You can safely remove this tab.

- The Crystal Reports component of .NET may not function properly after uninstalling Crystal Reports 10 from Visual Studio .NET. To restore functionality, run the Repair function in the .NET setup.

- If you install Crystal Reports 10 and then rerun the Visual Studio .NET 2002/2003 (VS .NET 2002/2003) install with the "Crystal Reports for Visual Studio .NET" option selected, you will see some problems. You will have both Crystal Reports 10 and VS .NET 2002/2003 controls in the toolbox, but VS .NET 2002/2003 will control code generation, publishing as a web service, and so on. To get Crystal Reports 10 to regain control over the IDE, you'll need to rerun the CR10 installation in repair mode. To properly downgrade to VS .NET 2002/2003 without Crystal Reports 10, uninstall CR10 and rerun the VS .NET 2002/2003 installation in repair mode.

### Upgrading

- Creating reports from Crystal Dictionaries, Crystal Queries, or Crystal InfoViews is no longer supported. You can open reports created in previous versions and set their data source locations to Command tables. You cannot refresh these reports.

- Compiled reports are not supported in Crystal Reports 10.

- The IsBusinessDay and NextNBusinessDays functions in the formula language are deprecated, and should no longer be used; the Formula Workshop, however, may still display the functions in the Function tree, or recognize the keywords if you type them directly into a formula.

- Borland C#Builder upgrade components are not available on your Crystal Reports Advanced or Developer CD. These components will be available on our web site at www.crystaldecisions.com.

- In this version, the creation of reports based on connections using datasets with SByte parameters (such as ADOPlus) is not supported.

- Version 10 of the RAS COM SDK does not support the creation of a report based on a Crystal Data Object (CDO).

- A new utility, called the Repository Migration Wizard (CrystalRepoWiz.exe), is installed as part of Crystal Enterprise 10. This tool is installed with the Business View Manager and is used to migrate repository content from a version 9 repository to the new format for a version 10 repository. You can run it from the win32_x86 directory, or choose Crystal Repository Migration Wizard from the Crystal Enterprise 10 program menu.

#### Backwards compatibility

- Funnel charts are a new feature in Crystal Reports 10. If you create a report in Crystal Reports 10 that includes a funnel chart, you may not be able to open the report in Crystal Reports 9. To resolve this issue, open the report in Crystal Reports 10 and change the chart to a format recognized by Crystal Reports 9.

- Because Business Views are a new feature in version 10, reports based on Business Views cannot be opened in earlier versions of Crystal Reports.

- Several new special fields have been added to this version of Crystal Reports. For your reference, these new fields map to version 9 fields as follows:

  - Horizontal Page Number maps to vertPageNumber in version 9
  - Current User Name maps to reportAuthor in version 9
  - Current User ID maps to vertPageNumber in version 9

- Crystal Reports 10 handles certain data types differently than version 8.5 and earlier. To ensure backwards compatibility, version 10 handles data types in reports created in version 8.5 and earlier in the same manner as those data types were handled in these earlier versions.

  As a result, if you change the database location of a report created in Crystal Reports 8.5 or earlier (using the Set Database Location menu option), and the database field types of the new location are handled differently in version 10 than in version 8.5, Crystal Reports 10 will handle the data types are they were handled in version 8.5 or earlier. Some examples of data types being treated differently in version 10 and version 8.5 include:

  - In version 8.5 and earlier, the Oracle native integer type was sometimes treated as a double whereas version 10 always treats an Oracle native type as a double.

  - In version 8.5 and earlier, the ODBC Access currency type was treated as a decimal whereas version 10 treats the ODBC Access currency type as a currency.

- Unmanaged reporting is no longer available in Crystal Enterprise 10.

### Notes and Limitations

- Although Crystal Reports 10 supports 64K parameter values, it does not support 64K descriptions for parameter fields.

- The Overlap formatting option (located on the General tab of the Chart Options dialog box) is available only for bar and column charts.

- The '}' character is a special character and should not be used in the name of a database, formula, or parameter field.

- Certain parts of hyperlink identifiers (specifically, double slashes) in data context formulas appear as commented text in the Formula Workshop.

- When using an OLAP report, if the report contains any row or column parameters, access to the worksheet is disabled to prevent any inconsistencies from being introduced into the report. As a result, you cannot access the worksheet when working with an OLAP report that contains any row or column parameters.

- If you perform a repository refresh on a command object that cannot be found, the Missing Repository Items dialog box displays no errors. However, a separate prompt notifies you that a cached copy of the command object is used.

- The Crystal Repository is not available (and not supported) in the Standard edition of Crystal Reports 10 because Crystal Enterprise is not included in the Standard edition.

- When you select the Chart/Map Off Entire Grid option in the Chart/Map Expert, the On Change Of and Subdivided By settings will be ignored.

- Because the Options dialog box now automatically remembers the last folder used, the Report Directory option has been removed from the Options dialog box.

- In the Report Options dialog box, clear the new Respect Keep Group Together On First Page check box to ensure that Crystal Reports begins printing your first group on the first page of the report, even when you have selected the Keep Group Together check box.

  Note: Until now, if your first group extended beyond a single page, the Keep Group Together check box caused Crystal Reports to begin printing the group on the second page of the report, instead of the first. By clearing the new Respect Keep Group Together On First Page check box, you can modify this behavior for the first page of the report.

- To avoid extraneous linking, the default auto-linking in the Database Expert has been changed to link first by key and then by name.

- When changing a Dynamic Data Connection parameter, you need to call VerifyDatabase prior to changing the parameter. Failure to call VerifyDatabase prior to changing the parameter results in incorrect browsed data.

- Data in a restricted column can be fully accessed by SQL expressions. When restricting a column, also update any SQL expressions that access the data in the restricted column to ensure that restricted data is not displayed.

- In the Repository Explorer, when copying a set of related files/objects from one folder to another (for example, from original_folder to new_folder), the new files/objects in new_folder still point to the original files/objects in original_folder. As a result, changes to one file/object in new_folder do not affect the other files or objects in new_folder. For example, if you copy a Data Foundation, Data Connection, Business Element and Business View from original_folder to new_folder, the new copy of the Business View will still point to the original Data Foundation, Data Connection and Business Element in original_folder. As a workaround, export the files to XML.

- When working with a report that contains dynamic database connections, the report data is not refreshed when switching from one database connection to the other.

- Due to issues with international characters, using Safari 1.0 to view reports is supported for English only.

- Diagnostic logging incorrectly reports version 5 and 6 reports as version 10.2.

- In Crystal Reports 8 and 9, you could embed script tags and other HTML tags into your reports to allow the creation of DHTML items in the output of the DHTML Viewer. To improve security, the default behavior in Crystal Reports 10 is to convert HTML to safe text. At your own risk, you can enable a registry key for HTML embedding behavior. Please read the article at http://www.net-security.org/article.php?id=596 to understand the implications of not encoding all HTML output from Crystal Reports.

- To make the new asymmetric reporting feature work correctly with charts and maps, a new option called "Chart (or Map) off entire grid" has been added to a number of locations in Crystal Reports. This feature is not documented in the Online Help. If you do not select this option, charts and maps offer only a subset of a single dimension on each row/column axis. Therefore, asymmetric filters applied to the grid viewpoint will not be inherited by the chart or map.

- The Java DHTML viewer may display charts and maps as either EMF (metafile format) images or bitmap images.

  In the following situations, EMF images will be displayed:

  1. The viewer is running on a Windows system.
  2. The viewer is running on a non-headless UNIX system.
  3. The viewer is running on a headless UNIX system with JDK 1.4 installed and the java.awt.headless system property set to true.

  In the following situations, bitmap images will be displayed:

  1. The viewer is running on a headless UNIX system with JDK 1.3 or lower installed.
  2. The viewer is running on a headless UNIX system with JDK 1.4 installed and the java.awt.headless system property not set.
  3. The viewer is running on a headless UNIX system with JDK 1.4 installed and the java.awt.headless system property set to false.

  For the purpose of this note, a headless UNIX system is defined as a system without the environment variable DISPLAY set. A non-headless UNIX system is defined as a system with the environment variable DISPLAY set and with an X system installed. The java.awt.headless system property can be set by adding -Djava.awt.headless="true" to the web application server's start-up script. Setting the java.awt.headless property directly in the JSP page may result in unpredictable behavior.

#### Crystal Enterprise integration

- To update Crystal Repository command objects in a Crystal Enterprise environment, ensure that the "Verify on First Refresh" and "Verify Stored Procedure on First Refresh" options are selected in the original report. (Click Report Options on the File menu in Crystal Reports.)

#### Printing and exporting

- When exporting a report to Microsoft Excel (data only) format, spreadsheet columns are not automatically sized as per the field chosen in "Column width based on objects" option. To have the spreadsheet columns sized automatically, Maintain Relative Object Position must also be enabled.

- In the previous version of Crystal Reports, exporting to CSV formats did not correctly nest fields within their group contexts. In this version, when you export to CSV format, fields in each details area are exported with the fields in all the group headers that precede it and all the group footers that follow it, in a single record.

- When exporting a version 9 and earlier OLAP report to Excel format, you are prompted to connect to the OLAP data source even though the report contains saved data.

- Justified text is not rendered correctly in Internet Explorer after you export a report to HTML format. This is a known issue with Internet Explorer.

- When exporting a report to DHTML as a single page, problems with some browsers can result in format errors. As a workaround, export to DHTML as separate pages.

- When exporting to Word or any Microsoft Office format and all of the following conditions are met, export may fail to display any data, because Microsoft Word or Office tries to edit it through FrontPage extensions. This behavior can be avoided by disabling web authoring on the server.

  Conditions:

  1. Web application is hosted on Windows 2003 Server with Integrated Windows Authentication enabled.

  2. The user is logged in on the client machine as someone with Authoring rights on the web server machine.

  3. The client browser has Integrated Windows Security enabled.

  4. Word or the MS Office application is installed on the client machine.

#### Data access

- New database drivers are currently under development for use with version 10 Crystal products on Windows and UNIX. Check this link for availability: http://www.crystaldecisions.com/ipl/default.asp?destination=updatedfeatures&language=EN&product=crystalenterprise&version=10

- Version 10 Crystal products no longer include most of the ODBC database drivers (manufactured by DataDirect Technologies) that were installed with earlier Crystal products. Updated DataDirect ODBC drivers for use with version 10 Crystal products on Windows and UNIX will be made available. Check this link for availability: http://www.crystaldecisions.com/ipl/default.asp?destination=updatedfeatures&language=EN&product=crystalenterprise&version=10

- On the Data Explorer toolbar of the Database Expert window, one of the options displayed is Create New Connection. When you expand this option, it gives you several new connection options (for example, ODBC).

- When using stored procedures with a Sybase ODBC driver, if the procedure name has an underscore (_) in it, the driver returns datatype = null. As a workaround, ensure that your procedure names do not contain underscore characters.

- You can change the data source for many reports at once by changing the ODBC System DSN, but Crystal Enterprise 10 handles this differently than previous versions. In the Set Location dialog box, edit the new table property OverriddenQualifiedTableName. When you load a report, if it is ODBC-based and in CR 8.5 (or earlier) format, then the useDSNProperties connection property is created and set to True. New reports created in version 10 will set this property to false by default. (This property will be saved with the report.) When this property is set to True, ODBC uses SQLConnect instead of SQLDriverConnect. You can change the useDSNProperties property in the Set Location dialog box.

Note: You cannot change the ODBC System DSN if the database name or owner name contain special characters. You may also encounter problems with older drivers, and with changing the names of your stored procedures.

- Data returned by a database query that contains extra space characters (such as " hello ") is truncated to exclude the extra spaces (" hello " becomes "hello"). As a result, database queries that depend on the extra space characters return unexpected data. Use one of the following workarounds:

  1. Use the Trim() function. (where Trim(lookupField)="hello")

  2. Use wildcards in the query. (where lookupField="*hello*")

- When working with a report based on a Business View with more than one table, if the report is saved as a disconnected report, setting the data source location results in errors.

- When creating a report from a Business View, if you cannot browse data if the Business View contains a row restriction, add a field to the report and then refresh the report prior to browsing data.

- When working with a report based on a Business View, if you need to change the repository or metadata parameter, you must set the repository and metadata parameter prior to fetching data. If you fetch data and then change the repository or metadata parameter, the old repository object is still used.

- When querying a Lotus Notes database with a query that contains nested outer joins, a "Failed to open rowset" error is generated. This error is due to the Lotus Notes ODBC driver not supporting nested outer joins.

- When you perform left outer join linking on SQL Expression fields in three or more tables from different data sources, whenever there is no matching on the first record in the link, a zero or empty string will return for the table(s) after this link.

  For example, there is a 4 table link case: A->B->C->D, where each table is from a different data source and all of the links are left outer joins on the SQL Expression field of each table. If there is no matching on the first record between the link of A and B, then table C and D will return a zero or empty string in the report.

- When building a report using Unicode (UTF-8) encoding and Japanese characters, the DB2 driver will report an error when adding tables.

- When using Smart Linking with the Oracle ODBC driver, an index based on an expression does not appear because the ODBC driver by Oracle does not return indexes on expressions; as a result, the index is not Smart Linked.

  When using Smart Linking with the Oracle native driver, an index based on a complex expression does not appear; as a result, the index is not Smart Linked. However, for expression indexes that are actually table fields in descending order, Smart Linking by Key will behave as expected.

- When connecting to a Sybase database using the Sybase native driver (crdb_p2ssyb10.dll), an error is reported if more than one SQL statement is being executed on the same database connection at the same time. The error is generated because the Sybase native driver is not able to handle multiple stored procedures on the same connection. As a workaround, use an ODBC driver instead of the Sybase driver.

- Crystal Reports 10 does not support opening reports based on Infoviews. If you open a report based on an Infoview in Crystal Reports 10, the report will appear to open successfully but the security will not be properly applied. If the Infoview feature is used to secure sensitive data, it is recommended that you limit the access or distribution of such reports. See the Business Views documentation for more information on new enhanced data security features in Crystal Enterprise and Crystal Reports 10.

- At times the direction of a join cannot be changed (ie. left outer join). In some linking scenarios this means that we will be not be able to form a query. In this case the user is required to change the linking order. The error message is "Failed To open Rowset. Query Engine Error: This Query Cannot be performed. An illegal link cycle has been detected."

#### Developer issues

- In Crystal Reports 8 and 9, you could embed script tags and other HTML tags into your reports to allow the creation of DHTML items in the output of the DHTML Viewer. To improve security, the default behavior in Crystal Reports 10 is to convert HTML to safe text. At your own risk, you can enable a registry key for HTML embedding behavior. Please read the article at http://www.net-security.org/article.php?id=596 to understand the implications of not encoding all HTML output from Crystal Reports.

- When using the PrintToPrinter method in .NET, an ArgumentException is thrown if the database logon or required parameters are not set. To handle this scenario more gracefully, you should check to ensure that the database logon and required parameters are set prior to executing the PrintToPrinter method.

- When using the Java SmartTag Chart, refreshing the chart results in a broken image. As a workaround:

  1. Crystalreportimagehandle.jsp should be in the same directory ascrsmarttag.jsp

  2. /FolderName/ needs to be added to the application's web.xml file (in this example, the two files are located in FolderName).

- When developing with the viewer SDK, you cannot call getDatabaseLogonInfos()or getParameterFields() before calling processHttpRequest() or getHtmlContent() because an exception will be thrown. As a workaround, call processHttpRequest() or getHtmlContent() before calling getDatabaseLogonInfos() or getParameterFields().

- Using the Crystal Reports .NET SDK, Table.ApplyLogOnInfo requires a call to Table.Location in order to work correctly.

  There are three possibilities:

  1. Table.ApplyLogOnInfo is called and the new database already has a table with the same name. In this case, there is no problem.

  2. ApplyLogOnInfo is called and the new database doesn't have a table with the same name. There are two outcomes:

     a) If Table.Location is eventually called, everything is OK.

     b) If Table.Location is not called, there is a problem. The report is still pointing to the old data source (that is, the data source that was being referenced before the ApplyLogOnInfo was called).

  This leads to two potential problems:

  1. If the old data source is invalid or is unreachable, we get a logon error, and the user is prompted for logon information using the old data source name, DB name, and so on. However, there is no way to change the Table name using this dialog box, so the user is potentially in a never-ending dialog loop.
  2. If the old data source is still valid, then it will be used to fetch data.

  A workaround is to call Table.Location or Table.TestConnectivity after a call to Table.ApplyLogOnInfo.

- In this release, the CrossTabObject object in .NET does not support border functions such as BackgroundColor, BorderColor and BottomLineStyle.

- Importing Microsoft data reports (DSR) is not supported in Crystal Reports 10 .NET SDK.

- A new VerifyDatabase API call has been added to the .NET API. Use the VerifyDatabase API call to make certain your report prints with the current version of the active database and resets its record buffers to the current record size.

  When you first create a report, the report draws its fields from the database as it exists at that time. It uses the structure of the database (number of fields, field position, data type, and so on) to identify and select those fields you want placed on the report. If you change the structure of the database (by adding or deleting fields) after you create the report, Crystal Reports needs to adapt the report to the new structure. This command is the tool you can use for adapting the report to the new database structure.

  The signature of the VerifyDatabase call is:

  `public virtual void VerifyDatabase()`

  VerifyDatabase throws a LogOnException if it fails to connect and logon to the database.

- If you have linked two reports together using Report Part navigation (for example, you have a "home" report where one of its sources is a hyperlink to a part of a "destination" report), the two reports will link correctly in a .NET application when accessed in the following contexts:

  - From the file directory.
  - From external web services.
  - From the Crystal Enterprise CMS if the reports are retrieved via the Query method of an InfoStore instance.

  However, an ObjectReferenceException will be thrown if you attempt to load the reports through an EnterpriseReport instance.

  Note: The EnterpriseReport class accesses reports from Crystal Enterprise via the EnterpriseReportService.asmx web service installed with Crystal Enterprise. These reports are exposed in the ServerExplorer window of Visual Studio. NET, under the node Crystal Services/Crystal Enterprise.

- A web project created with previous versions of Crystal Reports may use the selectionFormula parameter in the source code. Unless a new selection formula is intended, remove the selectionFormula parameter from the source code to take advantage of the caching mechanism offered by Crystal Reports.

- When using the .NET Framework version 1.0, the settings entered in the printer setup dialog box are not honored. As a result, when printing a report through .NET, specifying the number of copies to print or the paper size has no effect; the default settings are used. Upgrading to version 1.1 of the .NET Framework will resolve this problem.

- When you open a webform project created in a previous version of Crystal Reports for Visual Studio .NET, you are not prompted to upgrade the project.

- When working in Visual Basic, the VB code generator automatically uses the word "Type" as the argument name to the BeforeRenderViewItem and AfterRenderViewItem events. Since "Type" is a keyword in VB, an error will be returned at compile time. As a workaround, replace the automatically generated word "Type" with "sType".

- In the Viewer COM API, to obtain the object that triggers the BeforeRenderObject and AfterRenderObject events, the following steps are required:

  1. In Visual Basic, add the PageObjectModel.dll library as a reference.
  2. Use an explicit type for the object. For example:

     ``

         Private Sub n_SourceViewer_AfterRenderObject(ByVal eventContext As
         REPORTRENDERERLib.IAfterRenderObjectEventProperties)

         	Dim obj As TextObjectInstance

         	Set obj = eventContext.Object

         	Debug.Print "object name: " & obj.ReportObjectName 'Prints the name
         of the object.
         End Sub

- When viewing a report using an HTML report viewer (COM or Java SDK), the viewer's navigateTo method does not function if the logon data and required parameter fields are set programmatically. The navigateTo method functions normally if the logon data and parameter fields are obtained by prompting the user.

- Crystal Reports 10 employs URI encoding. If your application does not support encoded URIs, use the decodeURIComponent javascript method to decode the POST/GET data.

- A new property, ViewTimeSelectionFormula, has been added to the CrystalReportViewer (.NET Webform Viewer and WinForm Viewer). This section describes its usage:

  Each Crystal report contains an embedded selection formula that determines which data is retrieved from the database when the report is loaded or refreshed. However, this selection formula can be overridden.

  New selection formulas can be applied to a report when:

  - The report is being displayed by the CrystalReportViewer (the WebForm and WinForm viewer).
  - The report is being managed within Crystal Enterprise.

  Since a changed selection formula may impact the security of data, certain permissions regulate whom and in what scenario the selection formula can be overridden.

  The overriding selection formulas are applied in the following class properties contained in the Crystal Reports or the Crystal Enterprise SDK:

  In Crystal Reports (with RAS):

  - CrystalReportViewer.SelectionFormula property
  - CrystalReportViewer.ViewTimeSelectionFormula property

  In Crystal Enterprise:

  - CrystalReportViewer.SelectionFormula property
  - CrystalReportViewer.ViewTimeSelectionFormula property
  - Report.RecordFormula property

  The CrystalReportViewer.ViewTimeSelectionFormula property is different from the other properties in that the formula applied to it only filters the already-retrieved data; whereas the CrystalReportViewer.SelectionFormula property and the Report .RecordFormula property actually requery the database.

  Since a requery of the database impacts permissions, the following permissions logic applies:

  - The use of the Report.RecordFormula property requires edit rights on Crystal Enterprise
  - The use of the CrystalReportsViewer.SelectionFormula property requires either the ReportCreation API license (for RAS) or edit rights (for Crystal Enterprise).
  - The use of the CrystalReportViewer.ViewTimeSelectionFormula property does not require special permissions because it only applies a filter against a selection formula set at a lower level .

- When working in Visual Studio.NET, if you are binding a Server Report, you can no longer drop it from the Server Explorer to your project.

  A Server Report can be bound only through code. There are two ways to do this:

  - Through the Visual Studio.NET user interface:

    Add a Toolbox Item "ServerReport" and manually set its "ReportPath" and "WebServerUrl" properties.

    This will autogenerate the necessary code in your project and you can then bind to it.

  - Through code:

    The following ASP.NET code example demonstrates how to bind to a Server Report through code. It is identical to the code autogenerated in the method above:

    ``

        <%@ Import Namespace="CrystalDecisions.Web" %>
        <%@ Import Namespace="CrystalDecisions.Shared" %>

        <html>
        <head>

        <script language="C#" runat=server>

            protected ServerFileReport  serverFileReport1 = null;

            protected void Page_Init(object sender, EventArgs e)
            {
                this.serverFileReport1 = new ServerFileReport();
                this.serverFileReport1.ReportPath = "\\Feature Examples\\Chart.rpt";
                this.serverFileReport1.WebServiceUrl = "http://localhost/websamples/ServerFileReportService.asmx";

                DataBind();
            }

        </script>

        </head>

        <body>

        <form runat="server" action="demo2_sf.aspx" method="post">

        <p>Webform viewer viewing a ServerFile report</p>

        <table width=100%>
        <td align=center>

        <CrystalReports:CrystalReportViewer id=Viewer1 runat="server"
            ReportSource="<%#serverFileReport1%>"
            SeparatePages="TRUE"
            Height="520px"
            Width="900px">
        </CrystalReports:CrystalReportViewer>

        </td>
        </table>

        </form>

        </body>
        </html>

Java Viewer SDK

- The processHttpRequest method of the ServerControl object causes the response object to be committed. As a result, calling Response .sendRedirect after calling processHttpRequest will cause an exception to be thrown (java.lang.IIIegalStateException). As a workaround, call sendRedirect prior to calling processHttpRequest or manually set the page headings and use getHtmlContent in place of processHttpRequest.

- In addition to setting the viewer's MobileDevicesCharset property, the content-type for mobile devices can be set in the web.xml file for your web application. Use the <context-param> tag to set the content-type in a web.xml file.

      <context-param>

      <param-name>crystal_mobile_devices_charset</param-name>

      <param-value>ISO-8859-1</param-value>

      <description>Accepted values are:

      	"UTF-8"

      	"ISO-8859-1"

      	"SHIFT_JIS"

      	Default is "UTF-8"
      </description>
      </context-param>

  Note: If CrystalReportPartsViewer.setMobileDevicesCharset is set in the jsp, the value in this context parameter will be ignored.

Report Application Server (RAS) SDK

- If you are developing a standalone Report Application Server (RAS) application to do batch processing on reports, the `clientDoc.close()` method will not release all resources, and as a result the application will not exit properly. Therefore, a `System.exit(0)` call is needed to ensure that all resources are released.

- The Report Application Server (RAS) SDK does not support adding or removing individual Business Elements to/from reports. To add a Business View to a report, use DatabaseController.AddDataSource; to change to a different Business View of a report, use DatabaseController.SetDataSource. When you add a Business View to a report using RAS, all Business Elements are added to the report.

- The Report Application Server (RAS) SDK does not support using DatabaseController.AddDataSource(java.sql.ResultSet) when the RAS Server is running on Solaris or AIX.

- When developing with the Report Application Server (RAS) Java SDK for the web, you should add the folder `crystalreportviewers10` to your web application and also create a `web.xml` file in the WEB-INF directory of your web application.

- In the RAS COM SDK, the addByName method of the ReportObjectCtr class only accepts the following fields as arguments: db field, parameter field, and sql exp field. Additionally, the field name argument must be a formula form name.

- Use either the `ReportTemplateEngine` or one of the `ReportTemplate` constructors to create a report template.

  When using the `ReportTemplateEngine`, create the `TemplateEngine` object and set the Report Application Server (RAS) before calling the `createTemplate` method. See the RAS JavaDocs for details.

  When using one of the `ReportTemplate` constructors, please note the following:

  1. Use the `ReportTemplate(String templateReportPath, String ras)` constructor to create a report template in an unmanaged RAS environment (without Crystal Enterprise). In this case, because you are not using the `ReportTemplateEngine` to create the `TemplateEngine` object and to set the RAS server before calling the `createTemplate` method, you must set the RAS server for the `ReportTemplate` object here.

     Note: Be sure to use the appropriate unmanaged RAS report path.

  2. Use the `ReportTemplate(ReportClientDocument templateClientDoc)` constructor to create a report template in either a managed RAS environment (with Crystal Enterprise) or an unmanaged RAS environment.

### Language Version Issues

- In this version, the drill down feature of the report part viewer is not supported with multiple byte character sets (such as Japanese, Simplified Chinese, and Korean).

### Documentation

#### Product documentation on the Web

- To download the latest versions of the documentation included with your Crystal products, visit http://support.crystaldecisions.com/documentation/.

#### Documentation for administrators and users

- In topics on server-side processing, the Crystal Reports User's Guide and online help incorrectly state that, to be processed on the server, a report must not contain Average or Distinct count summaries. In fact, the only summaries that can be pushed down to the server are Sum, Maximum, Minimum, and Count.

- The Expand button in the Formula Workshop does not collapse the selected node in the Workshop Tree as described in the online help.

- Ignore all references to installing or uninstalling Crystal Reports for BEA WebLogic Workshop. This solution is automatically installed with BEA WebLogic Workshop 8.1 SP2 and later. For more information, refer to the BEA WebLogic Workshop documentation.

- The Crystal Reports Online Help does not describe the Currency Constants node that appears when you conditionally format currency fields in the Formula Workshop. The constants are:

  - crNoCurrencySymbol - Display no currency symbol.
  - crFixedCurrencySymbol - Place the currency symbol in the first (far left) position in the field, and leave extra space between the symbol and the currency if the field is justified to the right.
  - crFloatingCurrencySymbol - Place the currency symbol as close to the currency amount as possible, so that there are never any extra spaces between the symbol and the amount.

#### Documentation for developers

- The documentation for Crystal Reports .NET does not include sufficient information about binding the ReportSource property. The following is an addendum to the information provided in the installed help.

  Binding the ReportSource Property on a Web Form CrystalReportViewer, CrystalReportPartsViewer or a MobileCrystalReportPartsViewer.

  Unlike other .NET controls that are able to serialize their view of the data completely to view state, the Crystal Reports viewer controls save little or no information about the report job into view state. Report jobs are too large to serialize and send back to the client. This imposes unique databinding requirements on the Crystal Reports viewer controls.

  To databind to a Crystal Reports viewer control, there are three options:

  1. Viewer.AutoDataBind is set to true; this is the default. The viewer will automatically call DataBind() at the following stages:
     - at the beginning of OnLoad(), on the initial request when Page .IsPostBack is set to false.
     - at the beginning of LoadViewState(), before the view state is loaded, on a postback request when Page.IsPostBack is set to true. This allows the view state to take precedence over the initial settings the viewer gets from setting the ReportSource property.

       This option is useful if a dynamic change of viewer.ReportSource based on client postbacks is not needed.

  2. Viewer.ReportSource is set or DataBind() is called in OnInit(). This option is also useful if a dynamic change of viewer .ReportSource based on client postbacks is not needed.
  3. The page's LoadViewState() and SaveViewState() methods are overloaded to save and restore information about the user postback. This information is used to set viewer.ReportSource before the view state is loaded. This allows both viewer postback processing and customized postback processing to function properly. For example:

         namespace WebApplication9

         {

         ///
         /// Summary description for WebForm1.
         ///

         public class WebForm1 : System.Web.UI.Page

         {

         protected CrystalDecisions.Web.CrystalReportViewer
         CrystalReportViewer1;
         protected System.Web.UI.WebControls.TextBox TextBox1;
         protected WebApplication9.CachedChart cachedChart1;
         private static readonly String  VIEWSTATE_BASE_PAGE = "BASE_PAGE";
         protected System.Web.UI.WebControls.Button ViewButton;
         private static readonly String  VIEWSTATE_REPORTFILE = "REPORTFILE";
         protected override void LoadViewState( object objSavedState )

         {

         Hashtable   savedState = objSavedState as Hashtable;
         if ( savedState == null )
         {
         return;
         }

         // Please note the following line:

         CrystalReportViewer1.ReportSource = savedState[VIEWSTATE_REPORTFILE]
         ;
         base.LoadViewState( savedState[VIEWSTATE_BASE_PAGE] );
         }
         protected override object SaveViewState()
         {
         Hashtable   savedState = new Hashtable();

         // Please note the following line:

         savedState[VIEWSTATE_REPORTFILE] = TextBox1.Text;
         savedState[VIEWSTATE_BASE_PAGE] = base.SaveViewState();
         return savedState;
         }
         private void Page_Load(object sender, System.EventArgs e)
         {

         // Put user code to initialize the page here.

         }
         #region Web Form Designer generated code
         override protected void OnInit(EventArgs e)
         {

         // CODEGEN: This call is required by the ASP.NET Web Form Designer.

         InitializeComponent();
         base.OnInit(e);
         }

         ///
         /// Required method for Designer support - do not modify
         /// the contents of this method with the code editor.
         ///

         private void InitializeComponent()
         {
         this.cachedChart1 = new WebApplication9.CachedChart();
         this.ViewButton.Click += new System.EventHandler(this
         .ViewButton_Click);
         this.Load += new System.EventHandler(this.Page_Load);
         }

         #endregion
         private void ViewButton_Click(object sender, System.EventArgs e)

         {

         // Please note the following line:

         CrystalReportViewer1.ReportSource = TextBox1.Text;

         }
             }
         }

- In the ReportDocument class, the ExportToHttpResponse method currently does not support the HTML32 and HTML40 formats.

- The Crystal Enterprise .NET SDK documentation incorrectly states that the DefaultValueSortMethod property of the ParameterField class is read/write. This property is actually read only.

- The Crystal Enterprise .NET SDK documentation incorrectly states that the DefaultValuesSortOrder property of the ParameterField class is read/write. This property is actually read only.

- The Crystal Enterprise .NET SDK documentation incorrectly states that the ParameterValueKind property of the ParameterField class is read/write. This property is actually read only.

### Java Reporting Component

#### Restrictions

- The reporting component that processes reports is restricted by keycode to provide adequate performance for development, testing and deployment of limited reporting within applications.

- The Java Reporting Component processes reports created using only Crystal Reports 9 or 10. Reports from earlier versions of Crystal Reports should be converted using the Report Conversion tool available for download from Crystal Decisions.

- The Report Creation and Modification API for the Java Reporting Component are not exposed in this release.

- Report data that is saved along with the report template can be refreshed at runtime, but not saved with the report template. Data can only be refreshed and saved with the report template at design-time using the desktop report designer.

- Reports cannot be used that access the following data sources:

  - Java Bean Driver
  - Multiple data sources
  - OLAP

- Reports can be exported to PDF and RTF only.

- The following capabilities are not supported in this release:

  - Hierarchical grouping
  - Original order grouping
  - RTF and HTML interpretation
  - Horizontal page numbers
  - Geographic mapping
  - Gantt, Gauge, Funnel, and Numeric Axis charts
  - Crystal Reports Repository
  - Report parts
  - Report alerts
  - Business view support

#### Platform-Specific Issues

- On an AIX platform, the IBM JRE 1.4 uses the IPv6 extensions to the TCP/IP protocol. When refreshing a report, you need to set the java.net.preferIPv4Stack property in order to force the use of IPv4 protocols during the database connection: java -Djava.net.preferIPv4Stack=true <classname.class>

- On an AIX platform running IBM JDK 1.3.1 or 1.4, a bug in the JDK can cause reports to crash. As a workaround, set the environment JITC_COMPILEOPT to SKIP{com/crystaldecisions/reports/common/encryption/Processing}{processing}.

- When using Tomcat 4.1.24, embedded text objects are rendered as multiple instances of the first field in the embedded text objects. This does not occur in earlier or later versions.

- The BEA JRockit JVM has a parallel garbage collection option that causes out of memory exceptions when dealing with contiguous blocks of memory greater than 2 MB. As a workaround, increase the maximum heap size or switch to the generational copying garbage collector. To set the maximum heap size, use the "-XmxNNNm" option, where NNN is the size of the heap in MB. To use the generational copying garbage collector, use the "-Xgc:gencopy" option.

- Images created with Microsoft Photo Editor are not encapsulated by the Java Reporting Component. As a result, the image does not appear.

#### Formatting and Rendering

- The currency symbol in a report floats even if the fixed position option is selected.

- The time and date format displayed in a report is based only on the default locale settings of the server.

- When viewing a report, if the report contains objects that cross a page boundary, the resulting page is displayed as two horizontal pages.

- When viewing a report in the viewer, text objects without spaces do not display if the width is too small. Increasing the width of the text object causes the report to be correctly displayed.

- The character spacing feature is not supported in this release. Character spacing applied to a text object is ignored.

- Due to limitations in HTML 4.0, the Round border style for a box object is displayed as a rectangle instead.

- When viewing a report in the viewer, column headings of a cross-tab may overlap or truncate.

- When viewing a report with a cross-tab in the viewer, if the cross-tab has a total row at the top of the cross-tab, part of the fields in the cells are clipped. If the cross-tab has a total row at the bottom of the cross-tab, the cells are not clipped (it behaves as expected).

- When viewing a report in the viewer, extra lines in the text field can appear. This occurs due to rounding up the conversion from twips to pixels. As a workaround, resize the section slightly.

- When exporting a report that has Arial Bold text formatting to PDF, you may get an error message when you open the PDF.

#### Relational Databases and SQL Statements

- When refreshing a BIT stored procedure report from a SQL Server or Sybase database, parameter fields become pull down menus with no default values. You cannot view the report if the report relies on parameter values.

- The Oracle JDBC driver does not support reports with BFILE data.

- The Oracle JDBC driver does not support interval data types.

- The Oracle JDBC driver does not support reports with UROWID data.

- The Sybase JDBC driver only allows up to 255 characters to be entered for fields of type char, varchar, and nvarchar. If you need to enter more than 255 characters in a field, use the text type instead.

- Earlier versions of the Sybase JDBC driver do not support reports with UNICHAR or UNIVARCHAR data. Use jConnect for JDBC version 5.5 ESD #9 or above.

- The Informix ODBC driver returns the CLOB field as an object rather than a CLOB.

- Reports with cyclic joins are not supported in this release. In addition, joins that require execution of independent queries, which are then later linked by some other set of tables, are not supported in this release.

- BLOB fields that are set to 'can grow' do not grow. For example, different sized images placed in BLOB fields with the 'can grow' property are rendered as the same size.

- When refreshing a stored procedure report from a SQL Server database, timestamp parameters should be in hexadecimal format.

#### Charting

- The chart legend can appear differently in the Crystal Reports Designer than in the viewer.

- When viewing a report with a cross-tab and a chart, the cross-tab will always appear over the chart regardless of the setting of the MoveToFront property for the cross-tab.

- The viewer does not display textures or pictures used as the background for charts.

- When viewing a report with a chart, the data label of the chart does not appear if it has a negative value.

- When viewing a chart in the viewer, the points on the lines of the graph are not displayed. The line is still displayed.

- When viewing a chart that has an image split across multiple pages, the image can be incorrectly displayed. As a workaround, use the Keep Together flag on the image object to prevent splitting it across multiple pages.

#### Report Functionality

- The Java Reporting Component uses a high resolution time and date format. Date and time functions can return a non-integer number of seconds.

- When using the ASC and CHR functions, a runtime error occurs if characters with a value outside 0-127 are used. The ASC and CHR functions have been deprecated, and so the ASCW and CHRW functions should be used in their place to avoid the runtime error with values outside 0-127. The ASC and CHR functions will not be supported in future versions.

- Only English locale datetime strings in the formula language are supported in this release.

#### Viewer UI

- When viewing a report, the Export and Print buttons are not shown by default. To enable the buttons, set the isOwnPage property to true.

- When exporting a report, if the user presses the browser refresh button after the report has been exported, the user will be prompted to export the report again.

- Text search always begins on the second page. In addition, text search only highlights the first instance of the search string on each page. For instance, if two instances of the search string occur on the current page, the first instance will be highlighted but searching again goes to the next page.

#### IDE Integration

- The log properties file points to $HOME/Crystal as a location to create log files. Since it does not exist, an error message is displayed. You should either create this directory, or modify the file to point to an existing directory.

- The viewer does not function if you manually delete CrystalReportEngine-config.xml from the classes folder. Creating new instances of the viewer using the wizard will not create a new copy of the XML file.

- When launching the Crystal Reports designer to view a report within the IDE, the designer fails to find the report if the report name contains characters that are not available in the locale of the operating system. For example, on a system with English as the system locale, a report with Japanese characters in its name fails to load. As a workaround, open the report using the "Open File" menu item within the running designer.

- The behavior of the Crystal Reports Viewer Wizard is different when inserting a viewer into a JSP page than when inserting into a servlet page. When inserting a viewer into a JSP page, the Wizard inserts a viewer tag and a report tag from the tag library into the source code. When inserting a viewer into a servlet, the Wizard inserts the showReport function, the getHTMLContent function, and the necessary include statements into the source code.

- When using Japanese characters in JSP files, the characters may become corrupt because the JSP 1.2 specification requires that the default encoding to be set to ISO-8859-1. To use Japanese characters correctly, override the default encoding by adding the line, vmparam -Djsp.default.encoding.override=UTF-8, to the jbuilder.config file. If the file with Japanese characters was saved in UTF-8 format (using an application other than JBuilder), you do not need to edit the JBuilder.config file.

#### Documentation

- When creating a Java Reporting Component report source, the path of the report can only be specified by using a relative URL. File path, UNC address, and relative file path are not supported.

- The Setting Up the Development Environment section of the Developer's Guide states that crystal-root is the directory where the Java Reporting Component is installed. In a UNIX environment, crystal-root refers to the $HOME/crystalreports directory.

© 2003 Crystal Decisions, Inc.